package com.jaws.core.common.xxljob.domain;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;

import java.lang.reflect.Method;
import java.util.Date;

/**
 * xxl-job info
 *
 * @author liangqm
 * @date 2018/7/16 9:22
 * @since v1.0.0
 */
@Data
public class XxlJobInfo {

	/**
	 * 主键ID	    (JobKey.name)
	 */
	private String id;

	/**
	 * 执行器 class
	 */
	@JSONField(serialize=false)
	private Class jobHandlerClass;

	/**
	 * 执行器主键ID	(JobKey.group)
	 */
	private String jobGroup;

	/**
	 * 任务执行CRON表达式 【base on quartz】
	 */
	private String jobCron;

	/**
	 * job 执行的方法名称
	 */
	private String jobMethod;

	/**
	 * 任务执行方法
	 */
	@JSONField(serialize=false)
	private Method jobExecuteMethod;

	/**
	 *
	 */
	private String jobDesc;

	/**
	 *
	 */
	private Date addTime;

	/**
	 *
	 */
	private Date updateTime;

	/**
	 * 负责人
	 */
	private String author = "author";

	/**
	 * 报警邮件
	 */
	private String alarmEmail = "mail";

	/**
	 * 执行器路由策略
	 */
	private String executorRouteStrategy;
	/**
	 * 执行器，任务Handler名称
	 */
	private String executorHandler;
	/**
	 * 执行器，任务参数
	 */
	private String executorParam = "";
	/**
	 * 阻塞处理策略
	 */
	private String executorBlockStrategy = "SERIAL_EXECUTION";
	/**
	 * 失败处理策略
	 */
	private String executorFailStrategy = "FAIL_ALARM";

	/**
	 * GLUE类型	#com.xxl.job.core.glue.GlueTypeEnum
	 */
	private String glueType = "BEAN";

	/**
	 * GLUE源代码
	 */
	private String glueSource;

	/**
	 * GLUE备注
	 */
	private String glueRemark = "GLUE代码初始化";

	/**
	 * GLUE更新时间
	 */
	private Date glueUpdatetime;

	/**
	 * 子任务ID，多个逗号分隔
	 */
	private String childJobId;

	/**
	 * 任务状态 【base on quartz】
	 * copy from quartz
	 */
	private String jobStatus;

}
